<?php

namespace app\admin\controller;

use think\Db;
use think\Request;
use think\Session;


class User extends Admin
{

    // 查询数据
    public function index()
    {   

        $sql = DB::table('user')
                ->field(['pass'],true)
                ->select();


        $data = Db::table('user')
                ->join('user_role ur','u.id = ur.uid')
                ->join('role r','ur.role_id = r.id')
                ->alias('u')
                ->field('u.id, r.position')
                ->select();


        foreach($data as $v){
            
            foreach($sql as &$name){

                if(empty($name['position'])){

                    $name['position'] = null;
                }

                if($v['id'] == $name['id']){

                    $name['position'] .= $v['position'] . '  ';

                }
            }
        }
        // var_dump($sql);die;
        return view('admin@user/userList',['data' => $sql]);
    }


    // 跳转添加数据页面
    public function add()
    {
        return view('admin@user/add');
    }

    // 保存数据
    public function save(Request $req)
    {

        // 接收数据
        $data = $req->post();
        // var_dump($data);die;

        // 密码加密
        $data['pass'] = md5($data['pass']);

        // 执行sql
        $result = Db::table('user')->data($data)->insert();

        // 返回结果
        if ($result > 0) {

             return $this->success('添加成功..', url('admin/User/index'));

        } else {

             return $this->error('添加失败,请重试...');

        }

    }


    // 查询语句
    public function find($id)
    {

        // 查询
        $data = Db::table('user')->field(['userpass'],true)->find($id);

        // 跳转
        return view('admin@user/edit', ['data' => $data]);

    }


    // 修改管理员资料
    public function updata(Request $request)
    {
        
        // 接收数据
        $data = $request->post();

        // 获取id
        $id = $request->post('id');
        // var_dump($id);die;

        // 加密
        $data['pass'] = md5($request->post('pass'));

        // var_dump($data);die;
        // 执行sql语句
        $result = Db::table('user')->where('id', $id)->update($data);

        // 返回
       if ($result > 0) {

           return $this->success('保存成功..', url('admin/User/index'));

       } else {

           return $this->error('保存失败,请重试...');

       }
    }



    // 跳转分配角色页面
    public function role($id)
    {   

        // 查询角色数据
        $sql = DB::table('role')
                ->field(['create_time'],true)
                ->where('status = 1')
                ->select();


        return view('admin@user/role',['data' => $sql,'uid'=>$id]);


    }   



     // 提交分配角色
    public function doRole(Request $request)
    {   

        // 接收数据
        $data = $request->post();
        // var_dump($data);die;
        $uid = $data['uid'];
        $rid = $data['role_id'];

        // 删除数据
        $res = Db::table('user_role')->where($uid.'=uid')->delete();

        if (!empty($rid)) {

            foreach ($rid as $v) {

                $data = [
                    'role_id' => $v, 
                    'uid' => $uid, 
                ];

            //插入数据
            $res = DB::table('user_role') ->data($data)->insert();

            }
        }


        // 返回结果
        if ($res > 0) {

             return $this->success('角色已分配!', url('admin/User/index'));

        } else {

             return $this->error('角色分配失败,请重试...');

        }

    }



    // 管理员禁用
    public function status()
    {
        $id = input('id');

        // var_dump($id);die;
        
        // 查询
        $data = DB::table('user')->find($id);

        if ($data['name'] == '王川平') {

            $this->error('想禁用"超管",除非你是董事长...');
            
        }

        // 改变值
        $data['status'] = $data['status'] == 2?'1':'2';

        $res = $data['status'] == 1?'已启用':'已禁用';

        // 插入
        $sql = DB::table('user')
                ->where('id',$id)
                ->update($data);


        // 返回结果
        if ($sql > 0) {

             return $this->success($res, url('admin/User/index'));

        } else {

             return $this->error($res);

        }

    }

}


